/*
 * 版权声明 (c) 2025 XXX科技有限公司
 *
 * 本软件及其相关文档文件受版权保护。未经版权所有者明确书面许可，任何单位或个人不得
 * 以任何形式复制、传播、修改、出售、出租、反向工程、反编译或利用本软件的任何部分。
 *
 * 对于任何违反本声明的行为，版权所有者保留追究法律责任的权利。
 */

#ifndef __API_MODULE_H__
#define __API_MODULE_H__
#include "core/module.h"
#include "core/context.h"

namespace mod {
	class ApiModule final : public Module {
	public:
		explicit ApiModule(std::shared_ptr<Context> ctx, const std::string &module_name);
		ApiModule(const ApiModule &)            = delete;
		ApiModule &operator=(const ApiModule &) = delete;
		ApiModule(ApiModule &&)                 = delete;
		ApiModule &operator=(ApiModule &&)      = delete;
		~ApiModule();

		bool Init() override;
		void Start() override;
		void Stop() override;

		// 获取当前时间戳
		std::string Ping() const;

		// 获取网关集合(包含本地网关和远程网关)
		void Gateways() const;

		// 获取服务列表
		void Services() const;

		// 获取本地Agent列表
		void Agents() const;

		// 获取本地会话列表
		void Sessions() const;
	}; // class ApiModule
} // namespace mod
#endif // __API_MODULE_H__
